﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Consulta;

namespace Seguridad
{
    public class Security
    {
        private static Security instancia;

        public static Security Instancia
        {
            get
            {
                if (instancia == null)
                {
                    instancia = new Security();
                }
                return instancia;
            }
        }

        private Consultas consultas = Consultas.Instancia;

        // Rol

        public int altaRol(string nombre, char estado)
        {
            try
            {

                return consultas.altaRol(nombre, estado);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void bajaRol(int id)
        {
            consultas.bajaRol(id);
        }

        public void updateRol(int id, string nombre, char estado)
        {
            try
            {
                consultas.updateRol(id, nombre, estado);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<String[]> traerRoles()
        {
            return consultas.traerRoles();
        }

        // Permiso

        int altaPermiso(string desc)
        {
            return consultas.altaPermiso(desc);
        }

        void bajaPermiso(int id)
        {
            consultas.bajaPermiso(id);
        }

        void updatePermiso(int id, string desc)
        {
            consultas.updatePermiso(id, desc);
        }

        public List<String[]> traerPermisos()
        {
            return consultas.traerPermisos();
        }

        public string traePermiso(int id)
        {
            return consultas.traerPermiso(id);
        }

        // UsuarioRol

        public int altaUsuarioRol(int usuario, int rol)
        {
            return consultas.altaUsuarioRol(usuario, rol);
        }

        public void bajaUsuarioRol(int usuario, int rol)
        {
            consultas.bajaUsuarioRol(usuario, rol);
        }

        public List<string[]> traeRolesUsuario(int usuario)
        {
            return consultas.traeRolesUsuario(usuario);
        }

        public List<string[]> traeNoRolesUsuario(int usuario)
        {
            return consultas.traeNoRolesUsuarios(usuario);
        }

        // RolPermiso

        public int altaRolPermiso(int rol, int permiso)
        {
            return consultas.altaRolPermiso(rol, permiso);
        }

        public void bajaRolPermiso(int rol, int permiso)
        {
            consultas.bajaRolPermiso(rol, permiso);
        }

        public List<string[]> traerPermisosRol(int rol)
        {
            return consultas.traerPermisosRol(rol);
        }

        public List<String[]> traerNoPermisosRol(int id)
        {
            return consultas.traerNoPermisosRol(id);
        }


    }
}
